package com.weetop.cfw.utils

import android.app.Activity
import com.weetop.cfw.param.AliPayParam
import com.weetop.cfw.param.WxPayParam
import com.xgr.alipay.alipay.AliPay
import com.xgr.alipay.alipay.AlipayInfoImpli
import com.xgr.easypay.EasyPay
import com.xgr.easypay.callback.IPayCallback
import com.xgr.wechatpay.wxpay.WXPay
import com.xgr.wechatpay.wxpay.WXPayInfoImpli

/**
 *@Description:支付工具类
 */
class PayUtils {

    companion object{

        /**
         * 微信支付的方法
         * @param activity 上下文对象
         * @param wxPayParam 微信支付的参数对象,里面包含微信支付需要的各种数据
         * @param iPayCallback 支付回调
         */
        fun weChatPay(
            activity: Activity,
            wxPayParam: WxPayParam,
            iPayCallback: IPayCallback
        ) {
            //实例化微信支付策略
            val wxPay = WXPay.getInstance()
            //构造微信订单实体。一般都是由服务端直接返回。
            val wxPayInfoImpli = WXPayInfoImpli()
            wxPayInfoImpli.timestamp = wxPayParam.timestamp
            wxPayInfoImpli.sign = wxPayParam.paySign
            wxPayInfoImpli.prepayId = wxPayParam.prepayid
            wxPayInfoImpli.partnerid = wxPayParam.partnerid
            wxPayInfoImpli.appid = wxPayParam.appid
            wxPayInfoImpli.nonceStr = wxPayParam.noncestr
            wxPayInfoImpli.packageValue = wxPayParam.packageValue
            //策略场景类调起支付方法开始支付，以及接收回调。
            EasyPay.pay(wxPay, activity, wxPayInfoImpli, iPayCallback)
        }

        /**
         * 支付宝支付的方法
         * @param activity 上下文对象
         * @param aliPayParam 支付宝支付的参数对象，里面包含支付宝支付需要的各种数据
         * @param iPayCallback 支付回调
         */
        fun aliPay(activity: Activity, orderInfo: String, iPayCallback: IPayCallback) {
            //实例化支付宝支付策略
            val aliPay = AliPay()
            //构造支付宝订单实体。一般都是由服务端直接返回。
            val alipayInfoImpli = AlipayInfoImpli()
            alipayInfoImpli.orderInfo = orderInfo
            //策略场景类调起支付方法开始支付，以及接收回调。
            EasyPay.pay(aliPay, activity, alipayInfoImpli, iPayCallback)
        }
    }
}